﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using DiscoveryLogic.Common.Utilities;

namespace DiscoveryLogic.DataViz.NetworkDiagram.NetworkData
{
    /// <summary>
    /// 
    /// </summary>
    public interface ILinkDistanceCalculator
    {
        /// <summary>
        /// 
        /// </summary>
        Dictionary<string, SimpleDataType> RequiredArguments { get; }

        /// <summary>
        /// src field name -> arg name
        /// </summary>
        /// <param name="argNameMappings"></param>
        void InitFieldMappings(Dictionary<string,string> argNameMappings);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="dr1"></param>
        /// <param name="dr2"></param>
        /// <returns></returns>
        double? CalculateLinkDistance(DataRow dr1, DataRow dr2);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="entity1"></param>
        /// <param name="entity2"></param>
        /// <returns></returns>
        double? CalculateLinkDistance(BaseEntity entity1, BaseEntity entity2);
    }
}
